const fs = require("fs");
const path = require("path");
const user = require("../sql/user");
const sql = require("../sql")
const jwt = require("jsonwebtoken");

module.exports = (req, res)=>{
    const token = req.body.token;
    // 1. 改名操作：fs.rename(原文件路径+名, 新文件路径+名, 回调函数)
    // 原：../upload/40a57d8238a5e32361e087d17fcaad29
    // 新：../upload/40a57d8238a5e32361e087d17fcaad29-avatar1.jpg
    // 2. 文件路径操作：console.log( __dirname );
    // windows：c:\\abc\\qwe\\upload\\1.jpg
    // mac: /users/liyang/desktop/sh2206/day35/upload/2.jpg
    // 为了避免不同的操作系统引起的路径的差异化，使用内置模块：path进行处理
    // 自动连接多段路径：path.join(路径1, 路径2, 路径3, ....)
    // 3. 相对路径和绝对路径的问题
    // 相对路径：./   ../
    // 绝对路径：c:xxx/xxx/xxx
    // 什么时候相对，什么时候绝对
    // 在服务器环境中使用服务器中的文件，都是使用服务器的绝对路径
    // 服务器的绝对路径：
        // 本地绝对路径：c:\\abc\\qwe\\upload\\1.jpg
            // 一般用于在服务器中操作文件（修改，查看）
        // 服务器绝对路径：http://域名:端口/路径/文件.jpg
            // 一般用于在服务器外操作文件（查看）

    const file = req.files[0];
    // console.log();
    // {
    //     fieldname: 'avatar',
    //     originalname: 'avatar1.jpg',
    //     encoding: '7bit',
    //     mimetype: 'image/jpeg',
    //     destination: './upload',
    //     filename: '40a57d8238a5e32361e087d17fcaad29',
    //     path: 'upload/40a57d8238a5e32361e087d17fcaad29',
    //     size: 16021
    // }
    // 提前准备要修改的文件路径和文件名
    const oldName = path.join(__dirname, "..", file.path);
    // 提前准备修改后的文件路径和文件名
    const newName = oldName + "-" + file.originalname;

    // 利用fs模块修改上传之后的文件名
    fs.rename(oldName, newName, ()=>{
        // 解析token
        jwt.verify(token, "杨树林er", (err, data)=>{
            if(err){
                res.send({code:0, msg:"登录失效"});
            }else{
                // 修改数据库中的头像信息
                sql.set(user, {username: data.username}, {
                    avatar: "http://localhost:3000/" + file.filename + "-" + file.originalname
                }).then(()=>{
                    // 路由重定向：等同与前端的location.assign()
                    res.redirect("myinfo.html");
                })
            }
        })
    })
}

